<?php
/**
 * tpshop
 * ============================================================================
 * * 版权所有 2015-2027 深圳搜豹网络科技有限公司，并保留所有权利。
 * 网站地址: http://www.tp-shop.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
 * 不允许对程序代码以任何形式任何目的的再发布。
 * 采用TP5助手函数可实现单字母函数M D U等,也可db::name方式,可双向兼容
 * ============================================================================
 * $Author: IT宇宙人 2015-08-10 $
 */ 
namespace app\api\controller;
use think\Request;
use think\Session;
class Payment extends ApiCommon {
    
    public $payment; //  具体的支付类
 	public $pay_code;
	
//	protected function _initialize()
//  {    	
//		parent::__construct();
//  }
    /**
     * 析构流函数
     */
    public function  __construct() {                
		$this->pay_code = 'miniAppPay';     
		include_once  "plugins/payment/weixin/weixin.class.php";
        $code = '\\weixin';
        $this->payment = new $code();
    }
   
    /**
     *  提交支付方式
     */
    public function pay_code(){                        
        $order_id = I('order_id/d',0); // 订单id
//      $this->returnMsg('-1','未授权登录..'.Session::get('openid'),Session::get('openid'));
        if(!session('user')) $this->returnMsg('-1','未授权登录..'.Session::get('openid'),Session::get('openid'));

		
		$payname = '微信小程序支付';
		                      
        M('order')->where("order_id", $order_id)->save(array('pay_code'=>$this->pay_code,'pay_name'=>$payname));
        $order = M('order')->where("order_id", $order_id)->find();
        if($order['pay_status'] == 1){
			$this->returnMsg('-2','此订单，已完成支付!');
        }
        //tpshop 订单支付提交
        $payBody = getPayBody($order_id);
        $config_value['body'] = $payBody;
		$config_value['openid'] = Session::get('openid');
//      $config_value['openid'] = 'orBqe4oHoNzaPPa884otxXY0dp_c';
		//小程序支付
        $code_str = $this->payment->get_code($order,$config_value);
		
		if(isset($code_str['return_code'])){
			$return_code = $code_str['return_code'];
			if($return_code == "FAIL"){
				 $this->returnMsg('FAIL',$code_str['return_msg']);
			}
		}
		
	    $this->returnMsg('ok','',$code_str);
    }

    public function getPay(){
    	//手机端在线充值
        //C('TOKEN_ON',false); // 关闭 TOKEN_ON 
        header("Content-type:text/html;charset=utf-8");
        $order_id = I('order_id/d'); //订单id
        $user = session('user');
        $data['account'] = I('account');
        if($order_id>0){
        	M('recharge')->where(array('order_id'=>$order_id,'user_id'=>$user['user_id']))->save($data);
        }else{
        	$data['user_id'] = $user['user_id'];
        	$data['nickname'] = $user['nickname'];
        	$data['order_sn'] = 'recharge'.get_rand_str(10,0,1);
        	$data['ctime'] = time();
        	$order_id = M('recharge')->add($data);
        }
        if($order_id){
        	$order = M('recharge')->where("order_id", $order_id)->find();
        	if(is_array($order) && $order['pay_status']==0){
        		$order['order_amount'] = $order['account'];
        		$pay_radio = $_REQUEST['pay_radio'];
        		$config_value = parse_url_param($pay_radio); // 类似于 pay_code=alipay&bank_code=CCB-DEBIT 参数
        		$payment_arr = M('Plugin')->where("`type` = 'payment'")->getField("code,name");
        		M('recharge')->where("order_id", $order_id)->save(array('pay_code'=>$this->pay_code,'pay_name'=>$payment_arr[$this->pay_code]));
        		//微信JS支付
        		if($this->pay_code == 'weixin' && $_SESSION['openid'] && strstr($_SERVER['HTTP_USER_AGENT'],'MicroMessenger')){
        			$code_str = $this->payment->getJSAPI($order);
        			exit($code_str);
        		}else{
        			$code_str = $this->payment->get_code($order,$config_value);
        		}
        	}else{
        		$this->error('此充值订单，已完成支付!');
        	}
        }else{
        	$this->error('提交失败,参数有误!');
        }
        $this->assign('code_str', $code_str); 
        $this->assign('order_id', $order_id); 
    	return $this->fetch('recharge'); //分跳转 和不 跳转
    }
        // 服务器点对点 // http://www.tp-shop.cn/index.php/Home/Payment/notifyUrl        
        public function notifyUrl(){            
            $this->payment->response(); 

			$this->returnMsg('ok','back..');
			
            exit();
        }

        // 页面跳转 // http://www.tp-shop.cn/index.php/Home/Payment/returnUrl        
        public function returnUrl(){
            $result = $this->payment->respond2(); // $result['order_sn'] = '201512241425288593';  
            if(stripos($result['order_sn'],'recharge') !== false)
            {
            	$order = M('recharge')->where("order_sn", $result['order_sn'])->find();
            	$this->assign('order', $order);
            	if($result['status'] == 1)
            		return $this->fetch('recharge_success');
            	else
            		return $this->fetch('recharge_error');
            	exit();
            }          
            $order = M('order')->where("order_sn", $result['order_sn'])->find();
            $this->assign('order', $order);
            if($result['status'] == 1)
                return $this->fetch('success');
            else
                return $this->fetch('error');
        }                
}
